package com.chenken.recursion;

/**
 *	汉诺塔-递归思路	
 *	当n = 1时，直接将盘子从A移动到C
 *  当n > 1时，可以拆分为3大步骤
 * 		1.将n-1个盘子从A柱通过C柱移动到B柱
 * 		2.将编号为n的盘子从A柱移动到C柱
 * 		3.将n-1个盘子从B柱通过A柱移动到C柱
 */
public class HanNuoTa {

	/**
	 * 
	 * @param n		盘子编号
	 * @param a		from柱子
	 * @param b		辅助柱子
	 * @param c		to柱子
	 */
	public static void hanNuoTa(int n,String a,String b,String c) {
		if(n == 1) {
			move(n,a,c);
			return;
		}
		hanNuoTa(n-1,a,c,b);
		move(n,a,c);
		hanNuoTa(n-1,b,a,c);
	}
	
	public static void move(int n,String from,String to) {
		System.out.println("将"+n+"号盘子从"+from+"移到"+to);
	}
	
	public static void main(String[] args) {
		hanNuoTa(3, "a", "b", "c");
	}
}
